实质上ALU模块(逻辑运算单元)是用来完成数据计算,其他各个模块的存在都是为了保证指令能够一条接一条的有序执行。这种通用性结构对于传统的编程计算模式非常适合,同时可以通过提升CPU主频(提升单位时间内执行指令的条数)来提升计算速度。
通用处理器 CPU
冯诺依曼架构
由运算器、控制器、存储器、输入和输出设备 5
部分组成:
- 运算器:也叫算术逻辑单元(ALU),负责算术运算和逻辑运算。
- 寄存器:分为指令寄存器和数据寄存器,负责暂存指令、ALU所需操作数、ALU算出结果等。
- 控制器:负责调度工作,包括对要执行的指令进行译码、从内存中调取数据给寄存器、向运算器和寄存器发出具体操作指令等。
CPU主要擅长是逻辑控制,而非计算。
并行处理架构
- 单指令流单数流(SISD)系统。
- 每个指令部件每次仅译码一条指令,而且在执行时仅为操作部件提供一份数据
- 串行计算,硬件不支持并行计算;在时钟周期内,CPU只能处理一个数据流。
- 单指令流多数据流(SIMD)系统。
- 一个控制器控制多个处理器,同时对一组数据中每一个分别执行相同操作
- SIMD主要执行向量、矩阵等数组运算,处理单元数目固定,适用于科学计算
- 特点是处理单元数量很多, 但处理单元速度受计算机通讯带宽传递速率的限制
- 多指令流单数据流(MISD)系统。
- 作为理论模型出现,没有投入到实际应用之中
- 多指令流多数据流(MIMD)系统。
- 在多个数据集上执行多个指令的多处理器机器
- 共享内存 MIMD 和分布式内存 MIMD
SIMT(单指令多线程)
- 单指令多线程,有效地管理和执行多个单线程,允许一条指令的多数据分开寻址
- 无需开发者把数据凑成合适的矢量长度,并且SIMT允许每个线程有不同的分支
- 条件跳转会根据输入数据不同在不同的线程中有不同表现
CISC 架构和 RISC 架构
CISC架构:复杂指令集架构,指令数量 > 200,如 X86
除常用指令还包含许多不常用特殊指令。随着越来越多的特殊指令被添加到 CISC 架构中,常用程序运算指令仅占指令集 20%,80% 指令则很少用到,而这些很少用到的指令让 CPU 的设计变得极其复杂,大大增加了硬件设计的时间成本和面积开销。
RISC架构:简单指令集架构,指令数量 < 100,如 ARM
只包含处理器常用指令,对于不常用操作,执行多条常用指令的方式来达到同样的效果。因而在 RISC 架构诞生后,移动端设备设计的 CPU 都倾向于选择使用 RISC 架构。
详细区别 | CISC | RISC |
---|---|---|
指令系统 | 复杂,庞大 | 简单,精简 |
指令数据 | >200 | <100 |
指令长度 | 不固定 | 定长 |
可访存指令 | 不加限制 | 只有Load/Store指令 |
指令执行时间 | 相差较大 | 大部分在一个周期内完成 |
指令使用频率 | 相差较大 | 都比较常用 |
通用寄存器数 | 较少 | 多 |
目标代码 | 难以用优化编译生成高效的目标代码程序 | 采用优化的编译程序,生成代码较为高效 |
控制方式 | 微程序控制 | 组合逻辑控制 |
指令流水 | 可以通过一定方式实现 | 必须实现 |
附录
PPT
https://github.com/chenzomi12/DeepLearningSystem
第一篇章
合集·【AI框架】基础概念:链接
合集·【AI框架】分布式并行策略:链接
合集·【AI编译器】传统编译器:链接
合集·【推理系统】整体概述:链接
第二篇章
合集·【AI芯片】AI计算体系:链接
合集·【AI芯片】芯片基础:链接
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 nz_nuaa@163.com